﻿Imports System.Windows.Forms
Imports DNP.GestionComercial.BE
Imports DNP.GestionComercial.BL
Imports DNP.GestionComercial.Util
Imports DNP.GestionComercial.FormBase

Public Class frmLstProveedores
    Inherits DNP.GestionComercial.FormBase.frmFormBase

#Region "Declaracion de Variables"

    Dim oMsg As New sisMensaje
    Dim _frmManteRepresentantes As DNP.GestionComercial.FRM.frmMantRepresentantes

#End Region

#Region "Iniciar Pagina"

    Public Sub New()

        ' Llamada necesaria para el diseñador.
        InitializeComponent()
        lblTitulo.Text = "Mantenimiento de Proveedores"
        Me.tbpLista.Text = "Lista de Proveeedores"
        inicializarcontroles()

        Listar()
        'LlenaDetalle(0)

        ' Agregue cualquier inicialización después de la llamada a InitializeComponent().

    End Sub

    Private Sub InicializarControles()

        Me.tbcMantenimiento.TabPages.Add(tbpSubDetalle)
        Me.tbcMantenimiento.TabPages(2).Text = "Representantes"

        Dim obeRespuesta As New RespuestaBE
        Dim lstDepartamentos As New List(Of UbigeoBE)
        Dim oblUbigeo As New UbigeoBL
        txtCodigo.Enabled = False
        gbxEntidad.Visible = True
        txtEntidad.Visible = True
        txtEntidad.Enabled = True
        lblEntidad.Visible = True
        lblEntidad.Text = "Proveedor"

        sisFunciones.Carga_ComboFromEnum(cmbEstado, GetType(sisEnum.EstadoBD))

        obeRespuesta = oblUbigeo.ObtenerDepartamentos()

        If obeRespuesta.Respuesta Then
            lstDepartamentos = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
            sisFunciones.Load_Combo(cmbDepartamento, lstDepartamentos, "UGEO_DEPARTAMENTO", "UGEO_NOMBRE", False, "00")
        Else
            oMsg.showMsgWarning(obeRespuesta.Mensaje)
        End If

    End Sub

#End Region

#Region "Funciones"

    Private Sub FormatGrid()

        grdLista.AutoGenerateColumns = False
        grdLista.Columns.Clear()
        grdLista.Columns.Add("NPRO_CODIGO", "Código")
        grdLista.Columns.Add("CPRO_RUC", "RUC")
        grdLista.Columns.Add("CPRO_RAZONSOCIAL", "Razón Social")
        grdLista.Columns.Add("CPRO_DIRECCION", "Dirección")
        grdLista.Columns.Add("CPRO_TLFNO", "Teléfono")
        grdLista.Columns.Add("CPRO_EMAIL_01", "E-mail")

        grdLista.Columns(0).DataPropertyName = "NPRO_CODIGO"
        grdLista.Columns(1).DataPropertyName = "CPRO_RUC"
        grdLista.Columns(2).DataPropertyName = "CPRO_RAZONSOCIAL"
        grdLista.Columns(3).DataPropertyName = "CPRO_DIRECCION"
        grdLista.Columns(4).DataPropertyName = "CPRO_TLFNO"
        grdLista.Columns(5).DataPropertyName = "CPRO_EMAIL_01"

        grdLista.Columns(0).Width = 60
        grdLista.Columns(1).Width = 120
        grdLista.Columns(2).Width = 120
        grdLista.Columns(3).Width = 160
        grdLista.Columns(4).Width = 60
        grdLista.Columns(5).Width = 60

        grdLista.Columns(0).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(0).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(1).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(1).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(2).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(2).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(3).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(3).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(4).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(4).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

        grdLista.Columns(5).DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
        grdLista.Columns(5).HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter

    End Sub

    Private Sub LimpiarControles()

        txtCelular.Clear()
        txtCodigo.Clear()
        txtDireccion.Clear()
        txtEmail1.Clear()
        txtEmail2.Clear()
        txtRazonSocial.Clear()
        txtRUC.Clear()
        txtTelefono.Clear()
        cmbDepartamento.SelectedValue = "00"
        cmbProvincia.SelectedValue = "00"
        cmbDistrito.SelectedValue = "00"

    End Sub

#End Region

#Region "Accion Botones"

    Protected Overrides Sub tsbSalir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Me.Close()
    End Sub

    Protected Overrides Sub tsbListar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Listar()
    End Sub

    Protected Overrides Sub tsbNuevo_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        LimpiarControles()
        txtRUC.Focus()
        tbcMantenimiento.SelectedIndex = 1
        cmbEstado.SelectedIndex = 1
        tsbGuardar.Visible = True
    End Sub

    Protected Overrides Sub tsbGuardar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        If validar() Then

            If oMsg.showMsgQuestion("msgQuestionGuardar") = DialogResult.Yes Then
                Guardar()
            End If

        End If

    End Sub

    Protected Overrides Sub grdLista_Click(ByVal sender As Object, ByVal e As System.EventArgs)

        LlenaDetalle(0)

    End Sub

    Protected Overrides Sub tsbAbrir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

    End Sub

    Protected Overrides Sub tsbEliminar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

        Dim intFila
        If grdLista.RowCount = 0 Then
            Return
        End If
        Try
            If grdLista.Rows(0).Cells(0).Value.ToString().Trim() Is Nothing Or _
                grdLista.Rows(0).Cells(0).Value.ToString().Trim() = "0" Then
                Return
            End If
        Catch ex As Exception
            Return
        End Try
        intFila = grdLista.CurrentRow.Index
        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                Dim codigo As Integer = CType(grdLista.Rows(intFila).Cells(0).Value.ToString().Trim(), Integer)

                If (oMsg.showMsgQuestion("msgQuestionDelete") = DialogResult.Yes) Then
                    Eliminar(codigo)
                End If
            End If
        End If

    End Sub

#End Region

#Region "Operaciones"

    Private Sub Listar()

        Dim oRespuesta As New RespuestaBE
        Dim lst As New List(Of ProveedorBE)        
        Dim oParametro As New PARAMETROBE

        oParametro.PARAMETRO01 = txtEntidad.Text
        oRespuesta = New ProveedorBL().ListarTodos(oParametro)

        If oRespuesta.Respuesta Then
            lst = CType(oRespuesta.ValorRertono, List(Of ProveedorBE))
            FormatGrid()
            grdLista.DataSource = lst
            grdLista.Refresh()

        Else
            oMsg.showMsgWarning(oRespuesta.Mensaje)
            MsgBox(oRespuesta.Mensaje)

        End If

    End Sub

    Private Function validar() As Boolean
        Return True
    End Function

    Private Sub Guardar()

        Dim oProveedor As New ProveedorBE

        oProveedor.CPRO_RUC = ValidarStringVacio(txtRUC.Text, lblRuc.Text, True)
        oProveedor.CPRO_RAZONSOCIAL = ValidarStringVacio(txtRazonSocial.Text, lblRazonSocial.Text, True)
        oProveedor.CPRO_DIRECCION = txtDireccion.Text
        oProveedor.CPRO_EMAIL_01 = txtEmail1.Text
        oProveedor.CPRO_EMAIL_02 = txtEmail2.Text
        oProveedor.CPRO_TLFNO = txtTelefono.Text
        oProveedor.CPRO_TLFNO_CEL = txtCelular.Text
        oProveedor.CPRO_UBIGEO = cmbDepartamento.SelectedValue + cmbProvincia.SelectedValue + cmbDistrito.SelectedValue

        Dim usuario As String = "U60546"

        If Trim(txtCodigo.Text) = "" Then
            oProveedor.NPRO_CODIGO = 0
        Else
            oProveedor.NPRO_CODIGO = CInt(txtCodigo.Text)
        End If

        oProveedor.CPRO_ESTADO = cmbEstado.SelectedValue

        If (objListaError.intNumError > 0) Then
            showError()
            objListaError.intNumError = 0
        Else
            Dim oblProveedor As New ProveedorBL
            Dim oRespuesta As New RespuestaBE
            oRespuesta = New ProveedorBL().Guardar(oProveedor, usuario)

            If oRespuesta.Respuesta Then
                txtCodigo.Text = oRespuesta.Mensaje
                oMsg.showMsgInformation("msgExitoGuardar")
                Listar()
                tbcMantenimiento.SelectedIndex = 0

            Else
                oMsg.showMsgWarning("msgErrorGuardar")

            End If

        End If

    End Sub

    Private Sub Eliminar(ByVal codigo As Integer)

        Dim oParametro As New PARAMETROBE
        Dim oRespuesta As New RespuestaBE

        oParametro.PARAMETRO01 = codigo
        Dim usuario As String = "U60546"

        oRespuesta = New ProveedorBL().Eliminar(oParametro, usuario)

        If oRespuesta.Respuesta Then
            txtCodigo.Text = oRespuesta.Mensaje
            oMsg.showMsgInformation("msgExitoEliminar")
            Listar()
            tbcMantenimiento.SelectedIndex = 0

        Else
            oMsg.showMsgWarning("msgErrorEliminar")

        End If

    End Sub

    Private Sub LlenaDetalle(ByVal intTab As Integer)

        LimpiarControles()

        Dim intFila As Integer = -1
        If grdLista.RowCount = 0 Then
            Return
        End If

        intFila = grdLista.CurrentRow.Index

        If intFila <> -1 Then
            If grdLista.Rows(intFila).Selected Then
                '_strAccion = _Update
                If intTab >= 0 Then
                    tbcMantenimiento.SelectedIndex = intTab
                    txtCodigo.Text = grdLista.Rows(intFila).Cells(0).Value.ToString().Trim()
                    Obtener(txtCodigo.Text)
                End If
            End If
        End If

    End Sub

    Private Sub Obtener(ByVal codigo As String)

        If codigo <> "0" Then

            Dim oRespuesta As New RespuestaBE
            Dim oProveedor As New ProveedorBE

            oRespuesta = New ProveedorBL().Obtener(codigo)

            If oRespuesta.Respuesta Then

                oProveedor = CType(oRespuesta.ValorRertono, ProveedorBE)
                txtCodigo.Text = oProveedor.NPRO_CODIGO.ToString
                txtRazonSocial.Text = oProveedor.CPRO_RAZONSOCIAL.ToString
                txtCelular.Text = oProveedor.CPRO_TLFNO_CEL.ToString
                txtDireccion.Text = oProveedor.CPRO_DIRECCION.ToString
                txtEmail1.Text = oProveedor.CPRO_EMAIL_01.ToString
                txtEmail2.Text = oProveedor.CPRO_EMAIL_02.ToString
                txtRUC.Text = oProveedor.CPRO_RUC.ToString
                txtTelefono.Text = oProveedor.CPRO_TLFNO

                Try
                    cmbDepartamento.SelectedValue = oProveedor.CPRO_UBIGEO.Substring(0, 2)
                Catch ex As Exception
                    cmbDepartamento.SelectedValue = "00"
                End Try
                Try
                    cmbProvincia.SelectedValue = oProveedor.CPRO_UBIGEO.Substring(2, 2)
                Catch ex As Exception
                    cmbProvincia.SelectedValue = "00"
                End Try
                Try
                    cmbDistrito.SelectedValue = oProveedor.CPRO_UBIGEO.Substring(4, 2)
                Catch ex As Exception
                    cmbDistrito.SelectedValue = "00"
                End Try

                cmbEstado.SelectedValue = oProveedor.CPRO_ESTADO


            End If

        End If

    End Sub

#End Region

#Region "Eventos de Controles"

    Private Sub cmbDepartamento_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbDepartamento.SelectedIndexChanged

        If cmbDepartamento.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            obeRespuesta = oblUbigeo.ObtenerProvincia(dpto)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbProvincia, lstUbigeo, "UGEO_PROVINCIA", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        Else
            cmbProvincia.SelectedValue = "00"
        End If


    End Sub

    Private Sub cmbProvincia_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmbProvincia.SelectedIndexChanged

        If cmbProvincia.SelectedIndex >= 0 And Not cmbDepartamento.SelectedValue Is Nothing Then
            Dim obeRespuesta As New RespuestaBE
            Dim lstUbigeo As New List(Of UbigeoBE)
            Dim oblUbigeo As New UbigeoBL
            Dim dpto As String = DirectCast(cmbDepartamento.SelectedItem, UbigeoBE).UGEO_DEPARTAMENTO
            Dim prov As String = DirectCast(cmbProvincia.SelectedItem, UbigeoBE).UGEO_PROVINCIA
            obeRespuesta = oblUbigeo.ObtenerDistrito(dpto, prov)

            If obeRespuesta.Respuesta Then
                lstUbigeo = CType(obeRespuesta.ValorRertono, List(Of UbigeoBE))
                sisFunciones.Load_Combo(cmbDistrito, lstUbigeo, "UGEO_DISTRITO", "UGEO_NOMBRE", False, "00")
            Else
                oMsg.showMsgWarning(obeRespuesta.Mensaje)

            End If
        End If
    End Sub

    Private Sub txtRUC_KeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtRUC.KeyPress

        HabilitaSoloNumeros(e)

    End Sub

    Private Sub lkbRepresentante_LinkClicked(ByVal sender As System.Object, ByVal e As System.Windows.Forms.LinkLabelLinkClickedEventArgs) Handles lkbRepresentante.LinkClicked

        If _frmManteRepresentantes Is Nothing OrElse _frmManteRepresentantes.IsDisposed Then

            _frmManteRepresentantes = New DNP.GestionComercial.FRM.frmMantRepresentantes
            _frmManteRepresentantes.lblTitulo.Text = "Representantes de " + txtRazonSocial.Text
            _frmManteRepresentantes.txtCodigoProveedor.Text = txtCodigo.Text
            _frmManteRepresentantes.WindowState = FormWindowState.Normal

        Else
            _frmManteRepresentantes.BringToFront()
        End If
        _frmManteRepresentantes.Show()

    End Sub

#End Region

End Class